package com.book.manager.service;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import com.book.manager.entity.GiteeDTO;
import org.springframework.stereotype.Service;


@Service
public class giteeMsgHandler {

    //抽取方法
    private JSONObject getJson(String json){
        //commits中的信息
        String commits = null;
        try {
            commits = (((JSONObject) JSON.parse(json)).getString("commits"));
        } catch (Exception e) {
            commits = (((JSONObject) JSON.parse(json)).getString("head_commits"));
        }
        if(((JSONArray) JSONArray.parse(commits)).size()==0){
            return null;
        }
        return  (JSONObject) ((JSONArray) JSONArray.parse(commits)).get(0);
    }
    //时间、人物、事件、级别、url
    public GiteeDTO gitToDingHandler(String json){
        GiteeDTO giteeDTO = new GiteeDTO();
            //项目名
            String projectName = ((JSONObject) JSON.parse(json)).getJSONObject("project").getString("name");
            //项目所有者
            String owner = ((JSONObject) JSON.parse(json)).getJSONObject("project").getJSONObject("owner").getString("name");
            //提交分支
            String branch = ((JSONObject) JSON.parse(json)).getJSONObject("project").getString("default_branch");
            if(getJson(json)!=null) {
                //提交信息
                String message = getJson(json).getString("message");
                //提交时间
                String timestamp = getJson(json).getString("timestamp");
                //url
                String url = getJson(json).getString("url");
                //author的Json串-提交人
                String name = (getJson(json).getJSONObject("committer")).getString("name");
                //email
                String email = (getJson(json).getJSONObject("committer")).getString("email");
                //修改了哪里（path）
                String modified = getJson(json).getString("modified");
                giteeDTO.setEmail(email);
                giteeDTO.setMessage(message);
                giteeDTO.setModified(modified);
                giteeDTO.setOwner(owner);
                giteeDTO.setName(name);
                giteeDTO.setTimestamp(timestamp);
                giteeDTO.setUrl(url);
            }
            giteeDTO.setBranch(branch);
            giteeDTO.setProjectName(projectName);
        return giteeDTO;
    }
}
